package com.yjy.exception;

/**
 * 交易服务
 */
public enum UserMsgCode implements MsgCode {

    /** 成功 */
    SUCCESS("成功", MsgCode.initSUCCESSCode()),
    /** 失败 */
    FAILURE("失败", initErrorCode("EE", "9999")),


    /**************************************** 99 SYSTEM 系统错误 start ****************************************/
    /** 系统错误 */
    SYSTEM_ERROR("系统错误", initErrorCode(UserMsgCode.SYSTEM, "9999")),
    /** 服务请求错误 */
    SERVICE_REQ_ERROR("服务请求错误", initErrorCode(UserMsgCode.SYSTEM, "9998")),
    /**************************************** 99 SYSTEM 系统错误 end ****************************************/


    /**************************************** 01 TOKEN 登录模块 start ****************************************/
    /** TOKEN为空 */
    TOKEN_EMPTY("TOKEN为空", initErrorCode(UserMsgCode.TOKEN, "0001")),
    /** TOKEN失效 */
    TOKEN_EXPIRE("TOKEN为空", initErrorCode(UserMsgCode.TOKEN, "0002")),
    /** 权限不足 */
    HAVE_NO_PERMMISSION("权限不足", initErrorCode(UserMsgCode.TOKEN, "0003")),
    /**************************************** 01 TOKEN 登录模块 end ****************************************/
    ;

    /****************** 模块(module) start *********************/
    private static final String TOKEN = "01"; // 登录模块
    private static final String SYSTEM = "99"; // 系统错误
    /****************** 模块(module) start *********************/

    private String code; // 编码
    private String msg; // 名称

    UserMsgCode(String name, String code) {
        this.msg = name;
        this.code = code;
    }

    @Override
    public String getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }

    /**
     * 构建错误码（公司-服务名+模块+错误编号）
     * @param mol 模块（2位）
     * @param errorCode 编号（4位）
     * @return
     */
    private static String initErrorCode(String mol, String errorCode) {
        StringBuilder stb = new StringBuilder();
        stb.append(MsgCodeConstants.ZZ_PREFIX).append(MsgCodeConstants.ServiceCode.USER_SERVICE).append(mol).append(errorCode);
        return stb.toString();
    }
}